OpenGL wurde urspruenglich fuer C/C++ entwickelt, arbeitet mittlerweile
aber auch mit anderen Sprachen zusammen. OpenGl ist
eine prozedurale API,
Befehle erfolgen in Form von Funktionsaufrufen. Ein
Funktionsaufruf veraendert
den Zustand von OpenGL.
Diejenigen, die zuerst
erfolgen, werden zuerst aus-
gefuehrt. Wenn man also –
es muss auch durch einen
Aufruf geschehen – eine
Statusabfrage durchfuehrt,
hat man immer Konsistenz.
Durch eine Client – Server
Architektur ist es auch
moeglich, die Anwendung
auf einem anderen Rechner
auszufuehren als dem, auf dem
sich OpenGL befindet, z.B.
ueber ein lokales Netzwerk.
OpenGL ist
hardwareunabhaengig
und kann auch emulieren, jedoch
kann es auch vorhandene
Hardware nutzen, die neusten
Effekte durch Extensions.
Viele der Funktionen in OpenGL sind speziell dazu
da, die obigen Primitives
zu zeichenen, einige legen fest, wie dieses
geschieht, und dann gibt es noch
Funktionen zur Manipulation des Framebuffers.
OpenGL rendert in einen Framebuffer, der dann auf
den Bildschirm gebracht
wird. Unter gibt es zwei Arten von Objekten:
1.
geometrische
Objekte, sie bestehen aus Vertices und
2.
Bilder,
welche aus Pixeln bestehen.
Die Primitives zaehlen zu den geometrischen
Objekten.
Bei OpenGL hat man direkten Zugriff auf alle
Basisoperationen, es ist also
eine
Low – Level API. Das
wiederum erschwert es, komplexere geometrische
Objekte darzustellen, da es hierfuer kaum Hilfe gibt
(aber: GLUT).
Auch bei OpenGL gibt es einen immediate Mode, wie
bei DirectX,
und eine sogenannte DisplayList. Diese speichert
bestimmte Sequenzen
und die Objektbeschreibungen koennen dann aus ihr
entnommen werden.
Dieses bringt einen Geschwindigkeitsvorteil bei
statischen Szenen, aber einen
Nachteil bei nichtstatischen, da sie dann jedes Mal
neu erstellt werden muss.